home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / tool / genji / src / genji.c < prev    next >
Text File  |  1995-08-13  |  8KB  |  317 lines

  1. /*
  2.     源二郎  v2.1a (GUI Version)  By SAKU
  3.      [tabsize 4]
  4. */
  5.  
  6. #include "genji.h"
  7.  
  8. char    egbwork[1536];
  9. char    moswork[4096];
  10.  
  11. void    buttonLoop( int b1, int cx, int cy );
  12. void    egbInit();
  13. void    egbTerm();
  14. void    mouseInit();
  15. void    mouseTerm();
  16. char    *simpleSTR( int n );
  17.  
  18. int        main( int argc, char *argv[] )
  19. {
  20.     int        bflg = OFF;
  21.     int        dflg = OFF;
  22.     int        pflg = OFF;
  23.     char    defname[64] = "GENJI.DEF";
  24.     char    pdrname[64];
  25.     int        i,j,bt_exe,bt_pdr,bt_def,bt_end,bt_pag,bt_tab,bt_lef,bt_lin,bt[16];
  26.     int        sw,cx,cy;
  27.     char    buf[64];
  28.     double    a;
  29.  
  30.     egbInit();
  31.     mouseInit();
  32.     BT_init( egbwork );
  33.     VC_init( egbwork, 8, 240, 78, 10, 15, 1 );
  34.     EGB_foreColor( egbwork, 2 );
  35.     EGB_paintMode( egbwork, 0x02 );
  36.     EGB_box( egbwork, 7, 239, 633, 401 );
  37.  
  38.     ++ argv;
  39.     -- argc;
  40.     while(1)
  41.     {
  42.         if( **argv != '-' && **argv != '/' )
  43.             break;
  44.         ++ *argv;
  45.         -- argc;
  46.         switch( **argv )
  47.         {
  48.             case 'D':
  49.             case 'd':
  50.                 dflg = ON;
  51.                 ++ *argv;
  52.                 strcpy( defname, *argv );
  53.                 break;
  54.             case 'B':
  55.             case 'b':
  56.                 bflg = ON;
  57.                 break;
  58.             default:
  59.                 VC_printf( "'%s' is not proper option.\n", POINTER, *argv );
  60.                 break;
  61.         }
  62.         ++ argv;
  63.     }
  64.  
  65.     if( argc > 0 )
  66.     {
  67.         strcpy( pdrname, *argv );
  68.         pflg = ON;
  69.     }
  70.  
  71. /*------------------------- < SELLECT IN GUI > ------------------------*/
  72.     bt[0] = bt_exe = BT_create( 1, 0, 40, 120, 20, "‡印刷実行‡" );
  73.     bt[1] = bt_pdr = BT_create( 1, 0,  0, 120, 20, "印刷ファイル" );
  74.     bt[2] = bt_def = BT_create( 1, 0, 20, 120, 20, "設定ファイル" );
  75.     bt[3] = bt_end = BT_create( 1, 0,140, 120, 20, "源二郎★終了" );
  76.     bt[4] = bt_pag = BT_create( 1, 0, 60, 120, 20, "ページ印字" );
  77.     bt[5] = bt_tab = BT_create( 1, 0, 80, 120, 20, "タブサイズ" );
  78.     bt[6] = bt_lef = BT_create( 1, 0,100, 120, 20, "レフトマージン" );
  79.     bt[7] = bt_lin = BT_create( 1, 0,120, 120, 20, "1ページ行数" );
  80.  
  81. LABEL10:
  82.  
  83.     if( setInit( defname ) )
  84.         VC_printf( "定義ファイル\"%s\"が読み込めません。\n", POINTER, defname );
  85.     EGB_paintMode( egbwork, 0x22 );
  86.     EGB_foreColor( egbwork, 0 );
  87.     EGB_paintColor( egbwork, 0 );
  88.     EGB_box( egbwork, 120, 0, 220, 140 );
  89.     EGB_foreColor( egbwork, 15 );
  90.     if( pflg == ON )
  91.         symbol( egbwork, 122, 18, pdrname );
  92.     symbol( egbwork, 122, 38, defname );
  93.     if( writepage == ON )
  94.         symbol( egbwork, 122, 78, "する" );
  95.     else
  96.         symbol( egbwork, 122, 78, "しない" );
  97.     symbol( egbwork, 122, 98, simpleSTR(tabsize) );
  98.     symbol( egbwork, 122,118, simpleSTR(leftmargin) );
  99.     if( lpp == 0 )
  100.         symbol( egbwork, 122,138, "無設定" );
  101.     else
  102.         symbol( egbwork, 122,138, simpleSTR(lpp) );
  103.     EGB_paintMode( egbwork, 0x02 );
  104.  
  105.     sw = 0;
  106.     MOS_disp( 1 );
  107.     while( 1 )
  108.     {
  109.         MOS_rdpos( &sw, &cx, &cy );
  110.         for( i=0; i<8; i++ )
  111.             buttonLoop( bt[i], cx, cy );
  112.         if( sw == 1 )
  113.         {
  114.             if( BT_check( bt_exe, cx, cy ) == BTC_ON )
  115.             {
  116.                 MOS_disp( 0 );
  117.                 genji_mainPG( pdrname, defname, bflg );
  118.                 MOS_disp( 1 );
  119.             }
  120.             if( BT_check( bt_end, cx, cy ) == BTC_ON )
  121.                 break;
  122.             if( BT_check( bt_pdr, cx, cy ) == BTC_ON )
  123.             {
  124.                 VC_printf( "印刷ファイルを選んでください。\n" );
  125.                 FS_locate( 120, 0 );
  126.                 FS_fileSelect( egbwork, "*.*", pdrname );
  127.                 EGB_paintMode( egbwork, 0x22 );
  128.                 EGB_foreColor( egbwork, 0 );
  129.                 EGB_paintColor( egbwork, 0 );
  130.                 EGB_box( egbwork, 120, 0, 639, 20 );
  131.                 EGB_paintMode( egbwork, 0x02 );
  132.                 EGB_foreColor( egbwork, 15 );
  133.                 symbol( egbwork, 122, 18, pdrname );
  134.                 MOS_disp( 1 );
  135.             }
  136.             if( BT_check( bt_def, cx, cy ) == BTC_ON )
  137.             {
  138.                 VC_printf( "設定ファイルを選んでください。\n" );
  139.                 FS_locate( 120, 0 );
  140.                 FS_fileSelect( egbwork, "*.*", defname );
  141.                 EGB_paintMode( egbwork, 0x22 );
  142.                 EGB_foreColor( egbwork, 0 );
  143.                 EGB_paintColor( egbwork, 0 );
  144.                 EGB_box( egbwork, 120, 20, 639, 40 );
  145.                 EGB_paintMode( egbwork, 0x02 );
  146.                 EGB_foreColor( egbwork, 15 );
  147.                 symbol( egbwork, 122, 38, defname );
  148.                 MOS_disp( 1 );
  149.                 goto LABEL10;
  150.             }
  151.             if( BT_check( bt_pag, cx, cy ) == BTC_ON )
  152.             {
  153.                 i = BT_create( 1, 120, 60, 60, 20, "する" );
  154.                 j = BT_create( 1, 180, 60, 60, 20, "しない" );
  155.                 while( sw == 1 )
  156.                     MOS_rdpos( &sw, &cx, &cy );
  157.                 while(1)
  158.                 {
  159.                     MOS_rdpos( &sw, &cx, &cy );
  160.                     buttonLoop( i, cx, cy );
  161.                     buttonLoop( j, cx, cy );
  162.                     if( sw == 1 )
  163.                     {
  164.                         if( BT_check( i, cx, cy ) == BTC_ON )
  165.                         {
  166.                             writepage = ON;
  167.                             break;
  168.                         }
  169.                         if( BT_check( j, cx, cy ) == BTC_ON )
  170.                         {
  171.                             writepage = OFF;
  172.                             break;
  173.                         }
  174.                     }
  175.                 }
  176.                 BT_disappear( i );
  177.                 BT_disappear( j );
  178.                 EGB_paintMode( egbwork, 0x22 );
  179.                 EGB_foreColor( egbwork, 0 );
  180.                 EGB_paintColor( egbwork, 0 );
  181.                 EGB_box( egbwork, 120, 60, 639, 80 );
  182.                 EGB_paintMode( egbwork, 0x02 );
  183.                 EGB_foreColor( egbwork, 15 );
  184.                 if( writepage == ON )
  185.                     symbol( egbwork, 122, 78, "する" );
  186.                 else
  187.                     symbol( egbwork, 122, 78, "しない" );
  188.             }
  189.             if( BT_check( bt_tab, cx, cy ) == BTC_ON )
  190.             {
  191.                 ST_locate( 120, 80 );
  192.                 if( ST_inputStrings( egbwork, buf, 64, "タブサイズ" ) > 0 )
  193.                 {
  194.                     if( calcvalue( buf, &a ) == 0 )
  195.                     {
  196.                         i = a;
  197.                         if( i>0 && i<9 )
  198.                         {
  199.                             tabsize = i;
  200.                             EGB_paintMode( egbwork, 0x22 );
  201.                             EGB_foreColor( egbwork, 0 );
  202.                             EGB_paintColor( egbwork, 0 );
  203.                             EGB_box( egbwork, 120, 80, 639, 100 );
  204.                             EGB_paintMode( egbwork, 0x02 );
  205.                             EGB_foreColor( egbwork, 15 );
  206.                             symbol( egbwork, 122, 98, simpleSTR(tabsize) );
  207.                         }
  208.                     }
  209.                 }
  210.             }
  211.             if( BT_check( bt_lef, cx, cy ) == BTC_ON )
  212.             {
  213.                 ST_locate( 120, 100 );
  214.                 if( ST_inputStrings( egbwork, buf, 64, "レフトマージン" ) > 0 )
  215.                 {
  216.                     if( calcvalue( buf, &a ) == 0 )
  217.                     {
  218.                         i = a;
  219.                         if( i>-1 && i<81 )
  220.                         {
  221.                             leftmargin = i;
  222.                             EGB_paintMode( egbwork, 0x22 );
  223.                             EGB_foreColor( egbwork, 0 );
  224.                                 EGB_paintColor( egbwork, 0 );
  225.                             EGB_box( egbwork, 120, 100, 639, 120 );
  226.                             EGB_paintMode( egbwork, 0x02 );
  227.                             EGB_foreColor( egbwork, 15 );
  228.                             symbol( egbwork, 122,118, simpleSTR(leftmargin) );
  229.                         }
  230.                     }
  231.                 }
  232.             }
  233.             if( BT_check( bt_lin, cx, cy ) == BTC_ON )
  234.             {
  235.                 ST_locate( 120, 120 );
  236.                 if( ST_inputStrings( egbwork, buf, 64, "1ページ行数" ) > 0 )
  237.                 {
  238.                     if( calcvalue( buf, &a ) == 0 )
  239.                     {
  240.                         i = a;
  241.                         if( i<0 )
  242.                             i = 0;
  243.                         lpp = i;
  244.                         EGB_paintMode( egbwork, 0x22 );
  245.                         EGB_foreColor( egbwork, 0 );
  246.                         EGB_paintColor( egbwork, 0 );
  247.                         EGB_box( egbwork, 120, 120, 639, 140 );
  248.                         EGB_paintMode( egbwork, 0x02 );
  249.                         EGB_foreColor( egbwork, 15 );
  250.                         if( lpp == 0 )
  251.                             symbol( egbwork, 122,138, "無設定" );
  252.                         else
  253.                             symbol( egbwork, 122,138, simpleSTR(lpp) );
  254.                     }
  255.                 }
  256.             }
  257.             while( sw == 1 )
  258.                 MOS_rdpos( &sw, &cx, &cy );
  259.         }
  260.     }
  261. /*---------------------------------------------------------------------*/
  262.     mouseTerm();
  263.     egbTerm();
  264.     end_();
  265.     return 0;
  266. }
  267.  
  268. void    egbInit()
  269. {
  270.     EGB_init( egbwork, 1536 );
  271.     EGB_resolution( egbwork, 0, 3 );
  272.     EGB_resolution( egbwork, 1, 3 );
  273.     EGB_displayPage( egbwork, 0, 3 );
  274.     EGB_writePage( egbwork, 1 );
  275.     return;
  276. }
  277.  
  278. void    egbTerm()
  279. {
  280.     MOS_screenterm( egbwork );
  281.     return;
  282. }
  283.  
  284. void    mouseInit()
  285. {
  286.     MOS_start( moswork, 4096 );
  287.     MOS_sysIcon( 81, 0, 0, 0 );
  288.     MOS_writePage( 0 );
  289.     MOS_color( 0, 15 );
  290.     return;
  291. }
  292.  
  293. void    mouseTerm()
  294. {
  295.     MOS_disp( 0 );
  296.     MOS_end();
  297.     return;
  298. }
  299.  
  300. void    buttonLoop( int b1, int cx, int cy )
  301. {
  302.     if( BT_check( b1, cx, cy ) == BTC_ON )
  303.         BT_reverse( b1, 1 );
  304.     else
  305.         BT_reverse( b1, 0 );
  306.     return;
  307. }
  308.  
  309. char    *simpleSTR( int n )
  310. {
  311.     static char    buffer[256];
  312.  
  313.     sprintf( buffer, "%d", n );
  314.  
  315.     return buffer;
  316. }
  317.